1
成績低下の調査
DSAI2202Lab 8: Composing Data Operations

学修支援チームは、 最近の成績が低下した有効な履修のリストを必要としています。各学生を、同じ科目における本人の以前の成績と比較してください。

ルールの確認

  1. 2つの期間を使用します: 以前 と 最近。それぞれに同じ重みの2つの評価があります。
  2. 平均を比較する前に、 各 期間に少なくとも2つの非NULLスコアが必要です。
  3. 計算: decline_points = earlier_avg - recent_avg。
  4. 15ポイント以上の低下は 要確認を意味します。それ以外の場合、対象となる履修は アラートなし。
  5. データ不足 は別に扱います。0は有効なスコアであり、NULLや記録の欠落は0ではありません。

データベースの準備

提供された lab8_setup.sql をTAフォルダ DSAI2202/lab8/ からpgAdminで開き、ファイル全体を実行してください。新しい接続を開くたびに、右側の接続設定を再度使用してください。

このセットアップでは performance_comparisonという、ビューと呼ばれる保存済みクエリも提供されます。これは後の演習で役立ちますが、評価結果を保存した追加のテーブルではありません。

✍️ 計算する前に確認を
E01、E07、E08、E09、E24を確認してください。両方の期間で十分なスコアがあるものを判断してください。E24の0がE08のNULL値よりも強い根拠となる理由を説明してください。
スキーマの設定
SET search_path TO lab8;
件数の確認
SET search_path TO lab8;

SELECT 'students' AS table_name, COUNT(*) AS row_count
FROM students
UNION ALL SELECT 'courses', COUNT(*) FROM courses
UNION ALL SELECT 'enrolments', COUNT(*) FROM enrolments
UNION ALL SELECT 'assessment_results', COUNT(*) FROM assessment_results
UNION ALL SELECT 'support_units', COUNT(*) FROM support_units
ORDER BY table_name;
根拠の確認
SET search_path TO lab8;

SELECT e.enrolment_id, e.student_id, e.course_code,
       r.result_id, r.period, r.assessment_no, r.score
FROM enrolments AS e
JOIN assessment_results AS r
  ON r.enrolment_id = e.enrolment_id
WHERE e.enrolment_id IN ('E01', 'E07', 'E08', 'E09', 'E24')
ORDER BY e.enrolment_id, r.period, r.assessment_no;